home *** CD-ROM | disk | FTP | other *** search
- (*
- ** -------------------------------------------------------------------------
- ** Program: Basename
- ** Author: Keith R. Burby
- ** Version: 0.4
- ** Date: 23.12.93
- ** Description:
- ** AmigaDOS 2.0/3.0 replacement for the ARP Shell's "Basename" command.
- ** Extract base filename from complete path and optionally delete suffix.
- ** -------------------------------------------------------------------------
- *)
-
- (*
- History:
-
- v0.4 (23.12.93)
- Optimised the code some.
- Took out extra online help.
-
- v0.3 (22.12.93)
- Added extra online help.
-
- v0.2 (10.12.93)
- Can now retreive the filename from pathnames longer than 255 characters.
-
- v0.1 (7.12.93)
- Checks version of dos.library and exits if not 36 or greater.
- Suffix checking is now case insensitive.
-
- v0.0 (6.12.93)
- First Edition
- *)
-
-
- MODULE Basename;
-
- IMPORT
- (* NoGuru, *)
- d := Dos,
- s := Strings,
- u := Utility,
- SYS := SYSTEM;
-
- CONST
- DosLibVer = 36;
- PrgName = "Basename\o"
- "$VER: Basename 0.4 (23.12.93) Keith R. Burby";
- ArgTemplate = "NAME/A,SUFFIX";
-
- TYPE
- ArgArray = STRUCT (dummy: d.ArgsStruct)
- Name, Suffix: d.ArgString;
- END;
-
- VAR
- ErrNum: LONGINT;
-
-
- PROCEDURE GetBasename(): LONGINT;
-
- VAR
- bName, cName: d.ArgString;
- MyArgs: ArgArray;
- MyRDArgs: d.RDArgsPtr;
-
- BEGIN
- MyRDArgs := d.ReadArgs(ArgTemplate, MyArgs, NIL);
- IF (MyRDArgs # NIL) THEN
- bName := d.FilePart(MyArgs.Name^);
- IF (MyArgs.Suffix # NIL) THEN
- cName := SYS.ADR(bName[s.Length(bName^) - s.Length(MyArgs.Suffix^)]);
- IF(u.Stricmp(cName^, MyArgs.Suffix^) = 0) THEN
- cName[0] := "\o";
- END;
- END;
- d.PrintF("%s\n", bName);
- d.FreeArgs(MyRDArgs);
- END;
- RETURN(d.IoErr());
- END GetBasename;
-
-
- BEGIN
- IF (d.dos.lib.version >= DosLibVer) THEN
- ErrNum := GetBasename();
- IF (ErrNum # 0) THEN
- IF (d.PrintFault(ErrNum, PrgName)) THEN
- HALT(10);
- ELSE
- HALT(20);
- END;
- END;
- ELSE
- HALT(DosLibVer);
- END;
- END Basename.
-